<?php
/**
  * IBD - Projet Helvetia - 2009
  *
  * Alexandre DOS SANTOS COELHO
  * Mathieu RICHARD
  * Karim EL-ALAILI
  * Julien REBETEZ
  *
  */

/**
 * Controlleur d'application, tous les autres controlleurs heritent de celui-ci
 * @package controlleurs
 */
class AppController extends Controller {
  var $helpers = array('Html', 'Javascript', 'Form');

  /**
   * Redirige vers une autre page et affiche un message 'flash'
   * @param $message le flash a afficher
   * @param $redirect_url l'url de la page vers laquelle rediriger
   */
  function flashRedirect ($message, $redirect_url) {
    $this->Session->setFlash($message);
    $this->redirect($redirect_url);
    exit();
  }

  /**
   * Affiche un message 'flash'
   * @param $message le flash a afficher
   */
  function flash ($message) {
    $this->Session->setFlash($message);
  }

  /**
   * Lancee automatiquement avant l'execution d'une action d'un controlleur.
   * Si l'action contient le prefix admin_ et que l'utilisateur n'est pas 
   * authentifie, le renvoie vers la page de login
   */
  function beforeFilter () {
    //FIXME: difference admin/superadmin
    $isAdmin = $this->Session->check('User') != false;
    //variable pour la vue
    $this->set('admin', $isAdmin);

    //admin routing doit etre active dans core.php Configure::write('Routing.admin', 'admin');
    //ainsi, une action /posts/admin_add va etre routee vers /admin/posts/add
    if (isset($this->params['admin'])) {
      if (!$isAdmin) {
        //On redirige vers la page de login si l'utilisateur n'a pas les droits
        $this->flashRedirect('La page demandée requiert une authentification', '/users/login/');
      }
    }
  }
}

?>
